// miniprogram/pages/camera/camera.js
var app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    imgUrl: app.globalData.baseUrl + 'icon_title.png',
    isShow: true,
    baseUrl: app.globalData.baseUrl
  },

  myCard(){
    wx.navigateTo({
      url: '../myCard/myCard'
    })
  },

  takePhoto(){
    this.setData({
      isShow: false
    })

    wx.showLoading({
      title: '正在识别',
    })

    // 1.拍下照片
    this.getPhoto()
    .then((path) => {
      // 2.将图片转为base64
      return this.readFile(path)
    })
    .then((base64) => {
      // 3.提交腾讯云
      return this.txApi(base64)
    })
    .then((res) => {
      // 4.判断结果 
      console.log(res)
    })
  },

  // 1.拍照
  getPhoto(){
    return new Promise((reslove,reject)=>{
      const ctx = wx.createCameraContext();
      ctx.takePhoto({
        quality:'high',
        success: (res) => {
          reslove(res.tempImagePath);
        },
        fail : (err) => {
          reject(err)
        }
      })
    })
  },

  // 2.转base64
  readFile(path){
    return new Promise((reslove, reject)=>{
      const fs = wx.getFileSystemManager();
      fs.readFile({
        filePath : path,
        encoding : 'base64',
        success: (res) => { 
          reslove(res.data)
        },
        fail:(err) => {
          reject(err)
        }
      })
    })
  },

  // 3.提交腾讯云
  txApi(base64){
    return new Promise((reslove, reject) => {
      wx.request({
        url: 'https://recognition.image.myqcloud.com/ocr/general',
        data: {
          appid: '1258450033',
          image: base64
        },
        header: {
          'host':'recognition.image.myqcloud.com',
          'content-type':'application/json',
          'authorization': app.globalData.sign
        },
        method: 'POST',
        success: (res) => {
          let items = res.data.data.items;
          let hasYou = items.some((item)=>{
            return item.itemstring.indexOf("邮") > -1;
          })


          /******************* 调试云函数，测试完成后删除 *********************/
          // hasYou = true;
          /******************* 调试云函数 *********************/



          if (hasYou){
            let type;
            // 随机邮字
            let rand = Math.random();
            switch (true) {
              case (rand < 0.3):
                type = 0;
                break;
              case (rand < 0.5 && rand >= 0.3):
                type = 1;
                break;
              case (rand < 0.8 && rand >= 0.5):
                type = 2;
                break;
              case (rand >= 0.8):
                type = 3;
                break;
            }

            // 创建记录
            wx.cloud.callFunction({
              name: 'getYou',
              data: {
                type: type
              },
              success: (res) => {
                if (res.result.success == true){
                  wx.showToast({
                    title: '识别成功',
                    icon: 'success',
                    duration: 1000,
                    success: (res) => {
                      setTimeout(() => {
                        this.setData({
                          isShow: true
                        })
                        wx.navigateTo({
                          url: `../scanResult/scanResult?type=${type}`
                        })
                      }, 1000)
                    }
                  })
                }else{
                  wx.showToast({
                    title: res.result.msg,
                    icon: 'none',
                    duration: 2000,
                  })

                  this.setData({
                    isShow: true
                  })
                }
              }
            })
          }else{
            wx.showToast({
              title: '请再试一次',
              icon: "none",
              duration: 1000,
            })

            this.setData({
              isShow: true
            })
          }
        }
      })
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})